package com.dingding.service.userorderservice;

import java.util.List;

import com.dingding.bean.databean.request.ReqCalculateDistance;
import com.dingding.bean.databean.request.ReqCompetitiveOrder;
import com.dingding.bean.databean.request.ReqGetMapShowRoute;
import com.dingding.bean.databean.request.ReqGetNearbyOrderList;
import com.dingding.bean.databean.request.ReqGetNearbyUserList;
import com.dingding.bean.databean.request.ReqGetOrderInfo;
import com.dingding.bean.databean.request.ReqGoToPay;
import com.dingding.bean.databean.request.ReqPublishAboutCar;
import com.dingding.bean.databean.request.ReqUserLocation;
import com.dingding.bean.databean.response.DataResponse;
import com.dingding.bean.entity.UserLocation;
import com.dingding.common.core.beans.Userordert;

/**
 * 
 * @ClassName: IUserOrderTService 
 * @Description:用户订单临时service实现 
 * @author cheshaowei
 * @date 2015-10-21 上午10:43:28
 */
public interface IUserOrderTService {

	/**
	 * 
	 * @Title: publishAboutCar
	 * @Description:发布订单
	 * @author cheshaowei
	 * @throws
	 */
	public void publishAboutCar(ReqPublishAboutCar publishAboutCar, DataResponse dataResponse);

	/**
	 *
	 * @Title: competitiveOrder 
	 * @Description:用户抢单
	 * @author cheshaowei
	 * @throws
	 */
	public void competitiveOrder(ReqCompetitiveOrder reqCompetitiveOrder, DataResponse dataResponse);

	/**
	 * @Title: userNewestAddress 
	 * @Description: 用户最新地址 
	 * @param userLocation 用户的最新地址信息
	 * @return void    返回类型 
	 * @throws
	 */
	public void userNewestAddress(UserLocation userLocation, DataResponse dataResponse);

	/**
	 * @Title: getNearbyUserList 
	 * @Description: 获取附近列表(乘客列表/车主列表)
	 * @param dataResponse
	 * @param reqGetNearbyUserList
	 * @return void    返回类型 
	 * @throws
	 */
	public void getNearbyUserList(ReqGetNearbyUserList reqGetNearbyUserList, DataResponse dataResponse);

	/**
	 * @Title: getNearbyOrderList 
	 * @Description: 获取附近列表(乘客列表/车主列表)(V1.9.0新接口)
	 * @param dataResponse
	 * @param reqGetNearbyOrderList
	 * @return void    返回类型 
	 * @throws
	 */
	public void getNearbyOrderList(ReqGetNearbyOrderList reqGetNearbyOrderList, DataResponse dataResponse);

	/**
	 * @Title: calculateDistance 
	 * @Description: 计算距离价格
	 * @param reqCalculateDistance
	 * @param dataResponse 
	 * @author lijinchao
	 * @return void
	 * @throws
	 */
	public void calculateDistance(ReqCalculateDistance reqCalculateDistance, DataResponse dataResponse);

	/**
	 * @Title: automaticCancel 
	 * @Description: 自动取消订单
	 * @author yhq
	 * @return void
	 * @throws
	 */
	public void automaticCancel();

	/**
	 * @Title: batchHandle 
	 * @Description: 批量处理待取消订单
	 * @return boolean    返回类型 
	 * @throws
	 */
	public boolean batchHandle();

	/**
	 * @Title: batchDelete 
	 * @Description: 批量删除待取消订单
	 * @return boolean    返回类型 
	 * @throws
	 */
	public boolean batchDelete();

	/**
	 * @Title: existNotCompleteOrder 
	 * @Description: 根据用户Id判断该用户是否存在未完成订单 
	 * @param userId 用户Id
	 * @return List<Userordert>    返回类型 
	 * @throws
	 */
	public List<Userordert> existNotCompleteOrder(String userId);

	/**
	 * @Title: userCurrentLocation
	 * @Description: 实时定位用户当前位置
	 * @param reqUserLocation 用户的当前位置信息
	 * @param dataResponse 响应Bean
	 * @author yuHaiQing
	 * @return boolean    返回类型
	 * @throws
	 */
	public boolean userCurrentLocation(ReqUserLocation reqUserLocation, DataResponse dataResponse);

	/**
	 * 
	 * @Title: getMapShowRoute 
	 * @Description:根据起、终点经纬度获取地图显示路线
	 * @param getMapShowRoute 获取地图显示路线客户端请求数据封装bean
	 * @param dataResponse 客户端响应封装bean
	 * @since v1.8
	 * @author CHEHAUNBO
	 * 
	 */
	public void getMapShowRoute(ReqGetMapShowRoute getMapShowRoute, DataResponse dataResponse);

	/**
	 * @Title: getOrderInfoById
	 * @Description: 根据订单Id获取订单信息
	 * @param reqGetOrderInfo 客户端请求参数
	 * @param dataResponse 响应Bean
	 * @author yuHaiQing
	 * @return void    返回类型
	 */
	public void getOrderInfoById(ReqGetOrderInfo reqGetOrderInfo, DataResponse dataResponse);

	/**
	 * @Title: goToPay
	 * @Description:获取订单状态与用户钱包（点击去支付按钮时）
	 * @param goToPay 客户端请求参数
	 * @param dataResponse 响应bean
	 * @author fengshuonan
	 * @return void
	 * @throws
	 */
	public void goToPay(ReqGoToPay goToPay, DataResponse dataResponse);

	/**
	 * @Title: setOrderStatus
	 * @Description: 设置订单状态
	 * @param orderId 订单号
	 * @param status 订单状态
	 * @author fengshuonan
	 */
	public void setOrderStatus(String orderId, int status);

}
